package com.ruoyi.training.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 发票信息对象 invoice
 * 
 * @author hcc
 * @date 2025-09-29
 */
public class Invoice extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 发票ID */
    private String invoiceId;

    /** 缴费记录ID */
    @Excel(name = "缴费记录ID")
    private String paymentRecordId;

    /** 发票种类 */
    @Excel(name = "发票种类")
    private String invoiceCategory;

    /** 发票类型 */
    @Excel(name = "发票类型")
    private String invoiceType;

    /** 发票状态 */
    @Excel(name = "发票状态")
    private String invoiceStatus;

    /** 发票抬头 */
    @Excel(name = "发票抬头")
    private String invoiceTitle;

    /** 发票编号 */
    @Excel(name = "发票编号")
    private String invoiceNumber;

    /** 发票金额 */
    @Excel(name = "发票金额")
    private String invoiceAmount;

    /** 退换票原因 */
    @Excel(name = "退换票原因")
    private String invoiceRefundReason;

    /** 申请时间 */
    @Excel(name = "申请时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date invoiceRefundTime;

    /** 申请人 */
    @Excel(name = "申请人")
    private String invoiceRefundPerson;

    public String getInvoiceRefundRemark() {
        return invoiceRefundRemark;
    }

    public void setInvoiceRefundRemark(String invoiceRefundRemark) {
        this.invoiceRefundRemark = invoiceRefundRemark;
    }

    /** 退费原因备注*/
    private String invoiceRefundRemark;

    /** 发送手机号 */
    @Excel(name = "发送手机号")
    private String invoicePhone;

    /** 单位统一信用代码 */
    @Excel(name = "单位统一信用代码")
    private String invoiceCreditCode;

    /** 退换票金额 */
    @Excel(name = "退换票金额")
    private String refundAmount;

    /** 单位名称 */
    @Excel(name = "单位名称")
    private String invoiceUnitName;

    /** 开票时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开票时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issueTime;

    /** 发票信息（图片） */
    @Excel(name = "发票信息", readConverterExp = "图=片")
    private String invoiceImage;

    /** $column.columnComment */
    private String exampleOne;

    /** $column.columnComment */
    private String exampleTwo;

    /** $column.columnComment */
    private String exampleThree;

    /** 发票个人信息ID */
    private String studentId;

    public String getStudentId() {
        return studentId;
    }

    public void setStudentId(String studentId) {
        this.studentId = studentId;
    }

    public Date getInvoiceRefundTime() {
        return invoiceRefundTime;
    }

    public void setInvoiceRefundTime(Date invoiceRefundTime) {
        this.invoiceRefundTime = invoiceRefundTime;
    }

    public String getInvoiceRefundPerson() {
        return invoiceRefundPerson;
    }

    public void setInvoiceRefundPerson(String invoiceRefundPerson) {
        this.invoiceRefundPerson = invoiceRefundPerson;
    }

    public void setInvoiceId(String invoiceId) 
    {
        this.invoiceId = invoiceId;
    }

    public String getInvoiceId() 
    {
        return invoiceId;
    }

    public void setPaymentRecordId(String paymentRecordId) 
    {
        this.paymentRecordId = paymentRecordId;
    }

    public String getPaymentRecordId() 
    {
        return paymentRecordId;
    }

    public void setInvoiceCategory(String invoiceCategory) 
    {
        this.invoiceCategory = invoiceCategory;
    }

    public String getInvoiceCategory() 
    {
        return invoiceCategory;
    }

    public void setInvoiceType(String invoiceType) 
    {
        this.invoiceType = invoiceType;
    }

    public String getInvoiceType() 
    {
        return invoiceType;
    }

    public void setInvoiceStatus(String invoiceStatus) 
    {
        this.invoiceStatus = invoiceStatus;
    }

    public String getInvoiceStatus() 
    {
        return invoiceStatus;
    }

    public void setInvoiceTitle(String invoiceTitle) 
    {
        this.invoiceTitle = invoiceTitle;
    }

    public String getInvoiceTitle() 
    {
        return invoiceTitle;
    }

    public void setInvoiceNumber(String invoiceNumber) 
    {
        this.invoiceNumber = invoiceNumber;
    }

    public String getInvoiceNumber() 
    {
        return invoiceNumber;
    }

    public void setInvoiceAmount(String invoiceAmount) 
    {
        this.invoiceAmount = invoiceAmount;
    }

    public String getInvoiceAmount() 
    {
        return invoiceAmount;
    }

    public void setInvoiceRefundReason(String invoiceRefundReason)
    {
        this.invoiceRefundReason = invoiceRefundReason;
    }

    public String getInvoiceRefundReason()
    {
        return invoiceRefundReason;
    }

    public void setInvoicePhone(String invoicePhone) 
    {
        this.invoicePhone = invoicePhone;
    }

    public String getInvoicePhone() 
    {
        return invoicePhone;
    }

    public void setInvoiceCreditCode(String invoiceCreditCode) 
    {
        this.invoiceCreditCode = invoiceCreditCode;
    }

    public String getInvoiceCreditCode() 
    {
        return invoiceCreditCode;
    }

    public void setRefundAmount(String refundAmount) 
    {
        this.refundAmount = refundAmount;
    }

    public String getRefundAmount() 
    {
        return refundAmount;
    }

    public void setInvoiceUnitName(String invoiceUnitName) 
    {
        this.invoiceUnitName = invoiceUnitName;
    }

    public String getInvoiceUnitName() 
    {
        return invoiceUnitName;
    }

    public void setIssueTime(Date issueTime) 
    {
        this.issueTime = issueTime;
    }

    public Date getIssueTime() 
    {
        return issueTime;
    }

    public void setInvoiceImage(String invoiceImage) 
    {
        this.invoiceImage = invoiceImage;
    }

    public String getInvoiceImage() 
    {
        return invoiceImage;
    }

    public void setExampleOne(String exampleOne) 
    {
        this.exampleOne = exampleOne;
    }

    public String getExampleOne() 
    {
        return exampleOne;
    }

    public void setExampleTwo(String exampleTwo) 
    {
        this.exampleTwo = exampleTwo;
    }

    public String getExampleTwo() 
    {
        return exampleTwo;
    }

    public void setExampleThree(String exampleThree) 
    {
        this.exampleThree = exampleThree;
    }

    public String getExampleThree() 
    {
        return exampleThree;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("invoiceId", getInvoiceId())
            .append("paymentRecordId", getPaymentRecordId())
            .append("invoiceCategory", getInvoiceCategory())
            .append("invoiceType", getInvoiceType())
            .append("invoiceStatus", getInvoiceStatus())
            .append("invoiceTitle", getInvoiceTitle())
            .append("invoiceNumber", getInvoiceNumber())
            .append("invoiceAmount", getInvoiceAmount())
            .append("invoiceRefundReason", getInvoiceRefundReason())
            .append("invoiceRefundRemark", getInvoiceRefundRemark())
            .append("invoiceRefundPerson", getInvoiceRefundPerson())
            .append("invoiceRefundTime", getInvoiceRefundTime())
            .append("invoicePhone", getInvoicePhone())
            .append("invoiceCreditCode", getInvoiceCreditCode())
            .append("refundAmount", getRefundAmount())
            .append("invoiceUnitName", getInvoiceUnitName())
            .append("issueTime", getIssueTime())
            .append("invoiceImage", getInvoiceImage())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("exampleOne", getExampleOne())
            .append("exampleTwo", getExampleTwo())
            .append("exampleThree", getExampleThree())
            .append("studentId", getStudentId())
            .toString();
    }
}
